package com.gitee.feizns.quickstart.web.converter;

import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.converter.ConverterFactory;
import org.springframework.lang.NonNull;

/**
 * Spring MVC String与Enums之间的不区分大小写的转换器
 * <p>
 *     （Spring MVC 默认支持从将String类型的参数转换成相应的Enums
 *      但不支持不区分大小写的转换）
 * </p>
 * @author feizns
 * @since 2019/7/25
 */
public class StringToEnumsIgnoreCaseConverterFactory implements ConverterFactory<String, Enum<?>> {

    @Override
    public @NonNull <T extends Enum<?>> Converter<String, T> getConverter(@NonNull Class<T> targetType) {
        return new StringToEnumConverter<>(targetType, (source, e) -> source.equalsIgnoreCase(e.name()));
    }

}